package com.itheima.boottlias.filters;

import jakarta.servlet.*;

import java.io.IOException;

/**
 * @author ghy
 * @version 1.0
 * @since 2025-07-17 11:37
 */
// @WebFilter(urlPatterns = "/*")
public class DemoFilter implements Filter {

    /**
     * Tomcat反射调用创建Filter
     */
    public DemoFilter(){
        System.out.println("DemoFilter Constructor");
    }

    /**
     * 初始化方法，在Filter被创建后调用，只执行一次
     * @param filterConfig
     * @throws ServletException
     */
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // Filter.super.init(filterConfig);
        System.out.println("DemoFilter init");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("DemoFilter doFilter");
        System.out.println("拦截的操作都在这里执行");
        System.out.println("过滤前----");
        // 放行到一下一个资源，Filter知道
        chain.doFilter(request, response);
        // 目标资源执行完了，会回到这里
        //System.out.println("过滤后----目标资源执行完了，会回到这里");
    }

    /**
     * Filter被销毁时调用，只执行一次
     * 销毁时机在 Tomcat 停止前一刻
     */
    @Override
    public void destroy() {
        System.out.println("DemoFilter destroy");
    }
}
